package controladores;

import entidades.Persona;
import entidades.Usuario;
import java.util.List;
import params.RecursoUsuario;
import params.TipoPersona;
import serviceEntities.UsuarioLogueado;

/**
 *
 * @author RENZO
 */
public class UsuarioController extends BaseControlador {

    @Override
    public String processGETRequest(String peticion,List<RequestParam>params) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public String processPOSTRequest(String peticion,List<RequestParam>params) throws Exception {
        if(peticion.equals(RecursoUsuario.logIn)){
            return processLogin(params);
        }
        return "{}";
    }
    
    private String processLogin(List<RequestParam>params){
        String usuario = "";
        String clave = "";
        short tipo = 0;
        for(RequestParam param:params){
            if(param.getKey().equals("user")){
                usuario = param.getValue().trim();
            }else if(param.getKey().equals("clave")){
                clave = param.getValue().trim();
            }else if(param.getKey().equals("tipo")){
                if(TipoPersona.ADMIN == Short.parseShort(param.getValue())){
                    tipo = TipoPersona.ADMIN;
                }else if(TipoPersona.TECNICO == Short.parseShort(param.getValue())){
                    tipo = TipoPersona.TECNICO;
                }else{
                    this.sendMensajeError("No se especifico un tipo de usuario valido");
                }
            }
        }
        if(usuario.isEmpty() || clave.isEmpty() || tipo < 1){
            this.sendMensajeError("No se encontraron los parametros requeridos.");
        }else{
            Usuario user = new Usuario();
            user.setNombreUsuario(usuario);
            user.setClave(clave);
            Persona pers = new Persona();
            pers.setTipo(tipo);
            user.setPersona(pers);
            Boolean rpta = user.iniciarSesion();
            if(rpta){
                UsuarioLogueado ul = new UsuarioLogueado();
                ul.setId(String.valueOf(user.getId()));
                ul.setsId(user.getSesionActual().getSid());
                ul.setNombre(user.getPersona().getNombre());
                ul.setApellidoPaterno(user.getPersona().getaPaterno());
                ul.setApellidoMaterno(user.getPersona().getaMaterno());
                ul.setEmail(user.getPersona().getEmail());
                
                return sendMensajeOK(ul,RecursoUsuario.logIn,"POST");
            }else{
                return sendMensajeError();
            }
        }
        return "{n}";
    }
    
}
